package jdk8;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ImprovedTypeInference {
	@SuppressWarnings("unused")
	public static void main(String[] args) {
		Map<String, Object> map1 = new HashMap<String, Object>();
		// 而我们平常写的都是这样的:

		Map<String, Object> map2 = new HashMap<>();

		/**
		 * 在JDK7中，类型推断只有上面例子的那样的能力，即只有在使用赋值语句时才能自动推断出泛型参数信息(即<>里的信息)，
		 * 下面的官方文档里的例子在JDK7里会编译错误
		 * error : addAll(java.util.Collection<? extends java.lang.String>)in List cannot be applied to 
		 * (java.util.List<java.lang.Object>)
		 * 
		 * 但是下面的代码在JDK8里可以通过，也就说，JDK8里，类型推断不仅可以用于赋值语句，而且可以根据代码中上下文里
		 * 的信息推断出更多的信息，因此我们需要些的代码会更少。加强的类型推断还有一个就是用于Lambda表达式了。
		 */

		List<String> stringList = new ArrayList<>();
		stringList.add("A");
		stringList.addAll(Arrays.asList());
	}

}
